// console.log(100);
// setTimeout(() => {
//   console.log(200);
// })
// Promise.resolve().then(() => {
//   console.log(300);
// })
// console.log(400);
// 100
// 400
// 300
// 200

// Promise.resolve()
//   .then(() => {
//     console.log(1);
//     throw new Error('error1')
//   }).catch(() => {
//     console.log(2);
//   }).then(() => {
//     console.log(3);
//   })
//   1
//   2
//   3

// async function async1 () {
//   console.log('async1 start');     // 2
//   await async2();
//   console.log('async1 end');       // 6
// }

// async function async2 () {
//   console.log('async2');           // 3
// }

// console.log('script start');       // 1
// setTimeout(function () {
// console.log('setTimeout');         // 8
// }, 0)

// async1();

// new Promise (function (resolve) {
//   console.log('promise1')          // 4
//     resolve()
//   }).then(function () {
//     console.log('promise2')        // 7
//   })
  
// console.log('script end')          // 5

//   script start
//   async1 start
//   async2
//   promise1
//   script end
//   async1 end
//   promise2
//   setTimeout

Promise.reject('我想出错').catch((err) => {
    console.log(err);
    return '我不想出错1';  // 会被自动封装成return Promise.resolve('我不想出错')
  }).then(data => {
    console.log(data);
    return Promise.resolve('我不想出错2')
  }).then(data => {
    console.log('---' + data);
  })
//   我想出错
//   我不想出错1
//   我不想出错2